package rsj.sql.account;

import com.rlyy.aibase.utils.base.Node;
import com.rlyy.aibase.utils.base.TableNode;
import rsj.annotation.DynamicSelect;
import rsj.api.report.entity.ReportParam;
import rsj.service.report.dynamic.AccountReportDynamicStatement;

/**
 * 账号报表
 *
 * @author yuanqinglong
 * @since 2021/7/15 14:46
 */
public interface AccountReportDao {


    /**
     * 账号报告列表
     *
     * @param reportParam 报告参数
     * @return {@link TableNode}
     */
    @DynamicSelect(type = AccountReportDynamicStatement.class, method = "accountReportSql")
    TableNode accountReportList(ReportParam reportParam);


    /**
     * 账号报告数
     *
     * @param reportParam 报告参数
     * @return {@link Node}
     */
    @DynamicSelect(type = AccountReportDynamicStatement.class, method = "accountReportCountSql")
    Node accountReportCount(ReportParam reportParam);



    /**
     * 导出账号报告列表
     *
     * @param reportParam 报告参数
     * @return {@link TableNode}
     */
    @DynamicSelect(type = AccountReportDynamicStatement.class, method = "accountReportExportSql")
    TableNode accountReportExportList(ReportParam reportParam);




    /**
     * 账号报告详情列表
     *
     * @param reportParam 报告参数
     * @return {@link TableNode}
     */
    @DynamicSelect(type = AccountReportDynamicStatement.class, method = "accountReportDetailList")
    TableNode accountReportDetailList(ReportParam reportParam);


    /**
     * 账号报告详情统计
     *
     * @param reportParam 报告参数
     * @return {@link Node}
     */
    @DynamicSelect(type = AccountReportDynamicStatement.class, method = "accountReportDetailCount")
    Node accountReportDetailCount(ReportParam reportParam);



    /**
     * 导出账号报告详情列表
     *
     * @param reportParam 报告参数
     * @return {@link TableNode}
     */
    @DynamicSelect(type = AccountReportDynamicStatement.class, method = "accountReportDetailListExport")
    TableNode accountReportDetailListExport(ReportParam reportParam);
}
